#include <stdio.h> // perror()
#include <fcntl.h> // open()
#include <stdlib.h> // exit()
#include <unistd.h> // read()/write()/close()

/**
 * 需求：利用系统调用实现love.txt的一个备份love2.txt，并在控制台输出文件内容,
 *      且多次执行在love2.txt再累加一份内容
 */

int main(int argc, char const *argv[])
{
    // 1. 打开文件love.txt
    int love_fd = open("love.txt", O_RDONLY);
    if(love_fd == -1){
        printf("打开文件love.txt失败\n");
        return -1;
    }

    // 2. 打开文件love2.txt(读写创建追加，全部读写权限)
    int love2_fd = open("love2.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
    if(love2_fd == -1){
        printf("打开文件love2.txt失败\n");
        return -1;
    }

    //3.不断读写到love2和控制台
    char buf[1024];
    ssize_t read_len=0;
    //read返回0证明读到末尾
    while((read_len = read(love_fd, buf, sizeof(buf))) > 0){
        // 写到love2
        write(love2_fd, buf, read_len);
        // 输出到控制台
        write(STDOUT_FILENO, buf, read_len);
    }

    // 4. 关闭文件
    close(love_fd);
    close(love2_fd);

    return 0;
}

